Gathering Data

All data is measured using live sites. This is required to get ads to behave reasonably, though it introduces some variance between runs.

We’ve excluded pages which didn’t reach Time to Interactive across all tests.

Overall Distribution

Each point represents one run on a specific site. In this aggregate view, it’s difficult to see any difference between the subresource filter being on or off. The clean, low bands seen in most graphs appear to be pages which 404 in our page set.

Totals per point in time.

We’ve included this view to make it easy to pick out sample sites which fall in various places in these distributions.

Totals per point in time (sampled)

The x-axis here is the number of seconds taken to reach each key point in time. The y-axis is density: how common are values around this one?

Turn lines on and off by clicking on them in the legend. It’s interesting that the CPU graphs are generally pretty close to unimodal (apart from a lump at the bottom we believe to be 404 pages), but the wall time graphs are strongly multimodal.

Selecting pairs which differ only between the subresource filter being on and off illustrates the difference, which is largest for Time to Interactive.

Distribution per stage

Table for First Contentful Paint

First Contentful Paint

In the mean, we’re essentially solely blocked on resource requests.

otherNetworkActivities refers to resource requests handled on the browser side. We need to figure out if we can split these out more.

We use a hierarchy to attribute time. Of the following, we attribute time to the first activity present.

Our CPU time is slightly higher for warm than cold loads in the mean. This is because FCP itself is later, giving more time for CPU work. TODO - this makes no sense?

From the breakdowns we do have, we can see that time spent fetching script and images dominates.

Time To First Contentful Paint — Mean Contributors

Zooming into the CPU work shows that most time is spent executing script, and on “resource_loading”. I’m not certain what that work is. TODO

First Contentful Paint | Quantiles

First Contentful Paint | Normalized by quantiles

The normalized data shows that the fraction of time spent per category is surprisingly consistent. Image loading is much more of an issue on the first load than subsequent loads. Pages which are slower tend to have longer running scripts. It’s interesting that the time spent fetching images and script is pretty constant for cold loads, but for script especially, there’s a strong correlation between FCP and time spent fetching script in cold and warm loads.

Time To Interactive

Mean contributions to Time to Interactive clearly show the impact of subresource filtering. The average time spent blocked on loading images dropped from 10.7 to 9.7 seconds. In the 90th percentile, there was a drop from 25.3 to 22.3 seconds here.

Time To Interactive | Quantiles

Time To Interactive | Normalized by quantiles

Important Timestamp Deltas

This shows the mean contribution per contributor per important timestamp. The first column is time from navigation start to first paint.

Mean Contributors between Key Timestamps

Per Second Contributors

This shows the mean contribution per contributor per important second.

Mean Contributors over time

Below is the mean contribution per contributor per important second, only for the worst 100 sites (measured by wall clock TTI, without the subresource filter, with a cold cache).

Mean Contributors over time (Worst 100 sites)

Mean Contributors over time (Best 100 sites)